package com.doit.day01;

import redis.clients.jedis.Jedis;

import java.util.Random;
import java.util.Scanner;

public class _02_手机验证码 {
    public static void main(String[] args) {
        //获取redis的客户端
        Jedis jedis = _03_redis的客户端.getJedis();


        //设置一个场景 在一个月黑风高的晚上，富强打开手机，进入到小网站
        System.out.println("在一个月黑风高的晚上，富强打开手机，进入到小网站~~~~~");

        //富强开始登录了，输入手机号
        System.out.println("客官您好，请输入您的手机号：");

        Scanner sc = new Scanner(System.in);
        String phone = sc.nextLine();
        //验证一下手机号是否符合要求
        boolean flag = validatePhoneNumber(phone);


        if (!flag) {
            System.out.println("滚，手机号都输不对，没资格看小电影？");
        } else {
            //输入验证码  正确的话就直接登录成功，但是错了呢？提示重新输入 最多三次机会
            String code = getCode();
            System.out.println("您的验证码是：" + code);
            //如果正确 发送验证码  ==》 验证码短信是可以发一份，然后呢？
            // redis里面要不要存一份 设置过期时间
            jedis.setex(phone,30,code);
            System.out.println("请出入您的验证码：");
            String yourCode = sc.nextLine();

            if(yourCode.equals(jedis.get(phone))){
                System.out.println("登录成功");
            }else{
                System.out.println("请重新输入");
            }

        }

    }


    public static boolean validatePhoneNumber(String phoneNumber) {
        String regex = "^((13[0-9])|(14[5,6,7,9])|(15[^4])|(16[5,6])|(17[0-9])|(18[0-9])|(19[1,8,9]))\\d{8}$";
        return phoneNumber.matches(regex);
    }

    //生成验证码的方法
    public static String getCode() {
        StringBuilder sb = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < 6; i++) {
            int num = random.nextInt(10);
            sb.append(num);
        }
        return sb.toString();
    }


}
